'use strict';

const nums = [0, 1, 0, 12, 3];

// function moveZeros(nums) {
//   let j = nums.length - 1;
//   for (let i = 0; i <= j; ) {
//     if (nums[i] == 0) {
//       nums.splice(i, 1);
//       nums.push(0);
//       j--;
//     } else i++;
//   }
//   return nums;
// }

function moveZeroes(nums) {
  let nonZeroPointer = 0;

  // 遍历数组
  for (let i = 0; i < nums.length; i++) {
    // 如果当前元素不为0
    if (nums[i] !== 0) {
      // 将非零元素移到下一个非零元素应该放置的位置
      nums[nonZeroPointer] = nums[i];
      // 如果当前指针和非零元素指针不同，则将当前位置设为0
      if (nonZeroPointer !== i) {
        nums[i] = 0;
      }
      // 更新非零元素指针
      nonZeroPointer++;
    }
  }
  // 返回移动后的数组
  return nums;
}

console.log(moveZeroes(nums));
